package com.mm.cloud.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mm.cloud.common.core.result.Result;
import com.mm.cloud.sys.dto.form.RoleDTO;
import com.mm.cloud.sys.dto.form.RoleToPermissionDTO;
import com.mm.cloud.sys.dto.query.QueryRoleDTO;
import com.mm.cloud.sys.entity.Role;
import jakarta.validation.constraints.NotNull;

import java.util.List;

/**
 * <p>
 * 系统角色基础信息 服务类
 * </p>
 *
 * @author mr
 * @since 2020-09-15
 */
public interface IRoleService extends IService<Role> {

    /**
     * 分页查询
     *
     * @param dto
     * @return
     */
    Result<List<Role>> getRoleList(QueryRoleDTO dto);

    /**
     * 新增角色
     *
     * @param dto
     * @return
     */
    Result<String> saveRole(RoleDTO dto);

    /**
     * 修改角色
     *
     * @param dto
     * @return
     */
    Result<String> updateRole(RoleDTO dto);

    /**
     * 删除角色
     *
     * @param roleId 角色ID
     * @return
     */
    Result<String> deleteRole(@NotNull(message = "参数不能为空") Long roleId);

    /**
     * 根据角色ID查询拥有的资源权限
     *
     * @param roleId 角色ID
     * @return
     */
    Result<List<Long>> getPermissionIdByRoleId(@NotNull(message = "参数不能为空") Long roleId);

    /**
     * 角色资源设置
     *
     * @param dto
     * @return
     */
    Result<String> setRoleToPermission(RoleToPermissionDTO dto);
}
